﻿using System.Collections.Generic;
using Dao;
using OR;
using Interface.BO;
using Interface.DAO;
using JMI_Nucleo.JMIProvider;
using System.Data.Common;

namespace BO
{
    public class IBGE : IIBGE
    {
        IIBGEDao<mIBGE> dao;

        public IBGE()
        {
            dao = DaoFactory<IBGEDao>.Create();
        }
  
        public List<mIBGE> GetLista()
        {
            return dao.GetListIBGE();
        }

        public bool Salvar(mIBGE infoIBGE, char Acao, int Codigo = 0)
        {
            bool retorno = false;
            DbTransaction trans;
            try
            {
                EngineBD.Conectar();
                trans = EngineBD.IniciaTransacao();
                if (Acao == 'I')
                    retorno = dao.Inserir(infoIBGE);
                else if (Acao == 'A')
                    retorno = dao.Alterar(infoIBGE);
                retorno = EngineBD.FinalizaTransacao(trans, retorno);
            }
            finally
            {
                EngineBD.Desconectar();
            }
            return retorno;
        }
        public bool Excluir(int Codigo)
        {
            bool retorno = false;
            DbTransaction trans;

            try
            {
                EngineBD.Conectar();
                trans = EngineBD.IniciaTransacao();
                retorno = dao.Excluir(Codigo);
                retorno = EngineBD.FinalizaTransacao(trans, retorno);
            }
            finally
            {
                EngineBD.Desconectar();
            }
            return retorno;
        }

        public mIBGE GetIBGE(int Codigo)
        {
            mIBGE _mIBGE;
            try
            {
                EngineBD.Conectar();
                _mIBGE = dao.GetIBGE(Codigo);
            }
            finally
            {
                EngineBD.Desconectar();
            }
            return _mIBGE;
        }

        public bool TabelaCarregada()
        {
            bool retorno = false;

            try
            {
                EngineBD.Conectar();
                retorno = dao.TabelaCarregada();
            }
            finally
            {
                EngineBD.Desconectar();
            }
            return retorno;
        }

        public void SalvarEmBloco(List<string> lstValor)
        {
            try
            {
                EngineBD.Conectar();
                dao.InserirBlocoSQL(lstValor);
            }
            finally
            {
                EngineBD.Desconectar();
            }
        }
    }
}
